package org.elasticsearch.repositories.gridfs;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.ElasticsearchIllegalArgumentException;
import org.elasticsearch.common.component.AbstractLifecycleComponent;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import java.net.UnknownHostException;
public class GridFsService extends AbstractLifecycleComponent<GridFsService> {
private DB mongoDB;
@Inject
public GridFsService(Settings settings) {
super(settings);
}
public synchronized DB mongoDB(String host, int port, String databaseName, String username, String password) {
if (mongoDB != null) {
return mongoDB;
}
try {
MongoClient client = new MongoClient(host, port);
mongoDB = client.getDB(databaseName);
if (username != null && password != null){
mongoDB.authenticate(username, password.toCharArray());
}
return mongoDB;
} catch (UnknownHostException e) {
throw new ElasticsearchIllegalArgumentException("Unknown host", e);
}
}
@Override
protected void doStart() throws ElasticsearchException {
}
@Override
protected void doStop() throws ElasticsearchException {
}
@Override
protected void doClose() throws ElasticsearchException {
if (mongoDB != null) {
mongoDB.getMongo().close();
}
}
}